In a communication networks, different communications can have different levels of priority. For example, network access for user operations (e.g., file access, email access, web services) typically have a higher level of priority than network access for background operations, such as downloading program updates, synchronizing application data, and backing up local files. Background operations commonly include services that require little or no user interaction during the background operations and are therefore less sensitive to communication delays. Delays in network communications for the user activities noticeably degrade the user's experience, as may be reflected in the frustration of a pronounced pause during an active operation (e.g., opening a new email message). In contrast, such delays are hardly noticeable, if at all, for background operations.
In one background application, program updates may be downloaded to the user's system in the “background”, while the user works normally on other tasks in the “foreground”. After the program updates are downloaded, the user may be notified of the presence of the program updates on his or her system and prompted for authorization to install the new updates.
While performance of the background operations are less important (i.e., at a lower priority) than the performance of the foreground operations, performance of the background operations is still a consideration. In many systems, background operations should not impact foreground operations. Therefore, when a foreground operation requires more bandwidth, background operations are expected to back off and reduce their bandwidth usage. Nevertheless, background operations may be expected to optimize their bandwidth usage to some extent in order to make best use of available resources. Therefore, background operations should be reactive to available bandwidth where possible.
Existing approaches for managing background communications, however, typically require special intelligence throughout the network to provide information useful in managing the bandwidth usage of background operations. However, such intelligence is frequently not available in many networks and, therefore, cannot be assumed. Alternatively, some approaches require changes to the network communications stack throughout the network (e.g., changes to the transport protocol, such as TCP); however, such changes to a transport protocol may be difficult to deploy.
In addition, some existing approaches consider the communications capabilities of the user's system (e.g., the ability of the user's system to handle additional background traffic) while taking no account of the impact such background operations on foreground operations of other nodes on the network or of bandwidth constraints of the network itself. Therefore, these approaches may undesirably impact the performance of foreground operations on other network nodes by increasing the bandwidth usage of the background operations too high.